[dbt] v1.0リリース!dbt buildを試してみた
大阪オフィスの玉井です。
dbtユーザーの方であれば、既に知っている方がほとんどだと思いますが、2021年12月、ついにv1.0がリリースされました。
逆に言うと、5年ほどの間、実はまだバージョン1未満だったのです。
今回は、v1で登場した新機能のうち、dbt build
コマンドをご紹介します。
buildコマンドの概要
従来、dbtのコマンドは、seed
、test
、run
、snapshot
などなど、(ざっくり言うと)1つの操作に対して1コマンドという形でした。ですので、こういったコマンドを連続で実行したい場合、そのまま、複数のコマンドを続けて実行していかないといけません。
ですので、場合によっては、これらの操作をセットにして一気に実行したい時があります(というか、そういう方が多いかもしれません)。dbt Cloudであれば、Job機能がありますので、それを使って、いくつかのコマンドをセットにして定期的に実行させる…なんてことができます。
build
は、modelの作成(run)やテスト、csvのアップロード(seed)等を、1コマンドで一気に実行してくれます。公式ドキュメントに「In DAG order, 」とありますが、ここがポイントで、依存関係をdbt側で考慮してもらいつつ、各種操作をドガガッと実行してくれる部分がウリです(個人的意見)。(ざっくり言うと)各種コマンドの順番を、ユーザー側で考える必要が無い…ということですね。
例えば、いくつかのmodelから新しいmodelを作成する、という場合、新しいmodelを作成する前に、前段階のmodelに対して、予めテストを実行しておきたいことが多いと思います。そういう時、build
コマンドの中で、テストに失敗した場合、それに依存する処理はスキップされます(テストに失敗しても、それを無視して、以降の処理も実行してしまう…ということは起こらないようになっている。
※ドキュメントを見ると、v1.0以前から存在していたようにも見えますが、上記の1.0リリース記事に「新機能」として紹介されていたので、まあ良いでしょう。
やってみた
環境
- dbt Cloud
- dbt v1.0
- Google BigQuery
準備
下記のように、modelやtestを予め用意しておきます(今回、内容の詳細は省きます)。
ちなみに、DWH側も空っぽの新しいデータセットを設定したので、今回の実行が初めてとなります。つまり、dbt実行後、DWH側に正しくデータが生成されていれば、検証としては成功となります。
実行
早速、dbt build
を実行してみます。下記の通り、runやtestが一気に実行されました。順序について、私は何も指示していませんが、DAGが考慮された状態で実行されていますね(いきなり最後のmodelを作ろうとする、とかは無い)。
ちゃんと、途中でtestも実行されています。
DWH側にも、一気にmodelが作成されていました。
おわりに
今回はrunとtestだけが存在するProjectで試しましたが(準備がめんどくさかった)、公式ドキュメントによれば、seed
やsnapshot
も対象になっているので、そのあたりもよく使われるユーザーさんは、ぜひお試しください。
また、オプションもちょこちょこあるようです。build
はするんだけど、一部実行対象を絞りたいとかもできそうです。汎用的なオプションも対応しているようで、例えば—full-refresh
も付与できます。
もう少し検証したい気もしますが、他の新機能を触るのが先かな…。